unit untCadContasPagarDiversas;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls;

type
  TfrmCadContasPagarDiversas = class(TForm)
    Label1: TLabel;
    edtTipoDespesa: TComboBox;
    Label2: TLabel;
    edtFormaPagamento: TComboBox;
    Label3: TLabel;
    edtValorGasto: TEdit;
    Label4: TLabel;
    EdtData: TEdit;
    Panel2: TPanel;
    btnConfirmar: TSpeedButton;
    btnCancelar: TSpeedButton;
    Label6: TLabel;
    Label5: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    EdtDataVencimento: TDateTimePicker;
    procedure FormShow(Sender: TObject);
    procedure btnConfirmarClick(Sender: TObject);
    procedure edtValorGastoExit(Sender: TObject);
    procedure btnCancelarClick(Sender: TObject);
    procedure edtValorGastoKeyPress(Sender: TObject; var Key: Char);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
    codigo : Integer;
  end;

var
  frmCadContasPagarDiversas: TfrmCadContasPagarDiversas;

implementation

uses UntDm, untValidacoes;

{$R *.dfm}

procedure TfrmCadContasPagarDiversas.FormShow(Sender: TObject);
begin
  DM.CDSCP.Close;
  DM.CDSCP.Open;

  // ----------------busca a ultima pk gravada no banco
  DM.SDSComando.CommandText := 'SELECT MAX(cod_parcela) as codigo from "ItemContaPagar"';
  DM.SDSComando.Open;
  codigo := (DM.SDSComando.FieldByName('codigo').AsInteger +1);
  DM.SDSComando.Close;

  // inicializando os campos
  EdtData.Text := DateToStr(Date);
  edtTipoDespesa.ItemIndex := 0;
  edtFormaPagamento.ItemIndex := 0;
  edtValorGasto.Clear;
  EdtDataVencimento.Date := Date;
end;

procedure TfrmCadContasPagarDiversas.btnConfirmarClick(Sender: TObject);
 
begin
  //validando os campos
  if Trim(edtTipoDespesa.Text) = '' then
  begin
    ShowMessage('Tipo de Despesa Invalido');
    Exit;
  end;
  if Trim(edtFormaPagamento.Text) = '' then
  begin
    ShowMessage('Tipo de Forma de Pagamento Invalido');
    Exit;
  end;
  if Trim(edtValorGasto.Text) = '' then
  begin
    ShowMessage('Tipo de Valor Gasto Invalido');
    Exit;
  end;
  if (EdtDataVencimento.Date <= Date) then
  begin
    ShowMessage('Data Vencimento Invalida!');
    Exit;
  end;

  DM.SDSComando.CommandText :=  'INSERT INTO "ItemContaPagar" (cod_parcela, DESPESA,  '+
                                'seq_parcela, data_vencimento, valor_parcela, situacao_conta, observacao, data_entrada) '+
                                ' values (:cod_parcela, :DESPESA, :seq_parcela, :data_vencimento, '+
                                ':valor_parcela, :situacao_conta, :observacao, :data_entrada) ';

  DM.SDSComando.ParamByName('cod_parcela').AsInteger := codigo;
  DM.SDSComando.ParamByName('seq_parcela').AsString := '1/1';
  DM.SDSComando.ParamByName('data_vencimento').AsDate := EdtDataVencimento.Date;
  DM.SDSComando.ParamByName('valor_parcela').AsString := edtValorGasto.Text;
  DM.SDSComando.ParamByName('situacao_conta').AsString := 'FATURADA';
  DM.SDSComando.ParamByName('DESPESA').AsString := edtTipoDespesa.Text;
  DM.SDSComando.ParamByName('data_entrada').AsString := EdtData.Text;
  DM.SDSComando.ParamByName('observacao').AsString := ('Fatura Faturada Pelo Usuario: '+DM.CDSFuncionario.fieldByName('nome_fun').AsString);
  DM.SDSComando.ExecSQL();

  ShowMessage('Despesa Cadastrada com Sucesso!');

  Close;
end;

procedure TfrmCadContasPagarDiversas.edtValorGastoExit(Sender: TObject);
begin
  if edtValorGasto.Text <> '' then
  begin
    edtValorGasto.text := formatfloat('########0.00', strtofloat(edtValorGasto.text));
  end;
end;

procedure TfrmCadContasPagarDiversas.btnCancelarClick(Sender: TObject);
begin
  Close;
  
end;

procedure TfrmCadContasPagarDiversas.edtValorGastoKeyPress(Sender: TObject;
  var Key: Char);
begin
  if (ValidaDigitos2(Key) = False) then
  begin
    Key := #0;
  end;
end;

procedure TfrmCadContasPagarDiversas.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  DM.CDSCP.Refresh;
end;

end.
